home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / unpacklib.lha / UnpackLib / Include / Libraries / Unpack.h next >
C/C++ Source or Header  |  1995-03-29  |  11KB  |  306 lines

  1. /* Unpack Library Include File */
  2.  
  3. #ifndef    UNPACK_H
  4. #define    UNPACK_H
  5.  
  6. #ifndef    EXEC_TYPES_H
  7. #include    <Exec/Types.h>
  8. .endif
  9.  
  10. #ifndef    EXEC_IO_H
  11. #include    <Exec/io.h>
  12. #endif
  13.  
  14. #ifndef    EXEC_LIBRARIES_H
  15. #include    <Exec/Libraries.h>
  16. .endif
  17.  
  18. #ifndef    DOS_DOSEXTENS_H
  19. Sinclude    <dos/dosextens.h>
  20. #endif
  21.  
  22. /* Library Name & Version */
  23.  
  24. #define    UNPACKNAME    "unpack.library"
  25. #define    UnpackVersion    40L
  26. #define    UnpackRevision    55L
  27.  
  28.  
  29. /* Library Base Structure */
  30.  
  31. struct LibraryStruct {
  32.    struct Library LibNode;
  33.    BPTR LIB_SegList;
  34.    APTR LIB_DosBase;
  35.    APTR LIB_IntBase;
  36.    };
  37.  
  38.  
  39. /* Unpack Numbers Structure (V37+) */
  40.  
  41. struct NumberStruct {
  42.    UWORD NS_Version;        /* Library Version */
  43.    UWORD NS_Revision;        /* Library Revision */
  44.    UWORD NS_Types;
  45.    UWORD NS_Unpackers;
  46.    };
  47.  
  48.  
  49. /* Drive Structure (V36+) */
  50.  
  51. struct DriveStruct {
  52.    APTR DRV_UnpackInfo;
  53.    struct IOStdReq *DRV_IOStdReq;
  54.    struct MsgPort *DRV_MsgPort;
  55.    UBYTE DRV_DevName[48];
  56.    UBYTE DRV_DriveName[10];
  57.    };
  58.  
  59.  
  60. /* Unpack Info Structure */
  61.  
  62. struct UnpackInfo {
  63.    APTR UI_Filename;
  64.    APTR UI_Path;
  65.    APTR UI_Jump;
  66.    APTR UI_CruncherName;
  67.    APTR UI_DecrunchAdr;
  68.    LONG UI_DecrunchLen;
  69.    UWORD UI_ErrorNum;
  70.    UWORD UI_CrunchNum;
  71.    UBYTE UI_CrunchType;
  72.    UBYTE UI_Flag;
  73.    APTR UI_LoadNamePoi;
  74.    LONG UI_CrunchLen;
  75.    APTR UI_UserData;        /* V35+ */
  76.    APTR UI_TrackJump;        /* V36+ */
  77.    APTR UI_TrkErrJump;        /* V36+ */
  78.    LONG UI_Offset;        /* V36+ */
  79.    UWORD UI_Track;        /* V36+ */
  80.    APTR UI_ErrorMsg;        /* V37+ */
  81.    APTR UI_CrunchAdr;        /* V37+ */
  82.    APTR UI_LhaPattern;        /* V38+ */
  83.    BOOL8 UI_UseFilenamePointer    /* V39+ */
  84.  
  85. /* This Is Private, Do NOT Touch */
  86.  
  87.    UBYTE UI_Pad
  88.    LONG UI_CrunchLenTemp;
  89.    LONG UI_FileHandler;
  90.    LONG UI_Lock;
  91.    LONG UI_OldLock;
  92.    APTR UI_InfoAdr;
  93.    APTR UI_UnpackPoi;
  94.    ULONG UI_Temp;
  95.    UBYTE UI_Data[16];        /* V35+ */
  96.    UBYTE UI_LoadName[128];
  97.    UBYTE UI_ExecuteString[256];
  98.    };
  99.  
  100.  
  101. /* The UI_Flag Have The Following Definations: */
  102.  
  103. #define    UFB_OneFile    0L        /* This Select To Decrunch One File Or
  104.                        All Files In An Archive. */
  105. #define    UFB_Delete    1L        /* Delete Files After Scanning. */
  106. #define    UFB_NoFree    2L        /* Free Memory After Jump (V35+) */
  107. #define UFB_Banner    3L        /* Give Banner (V36+) */
  108. #define UFB_NoLoad    4L        /* Do Not Load File (V37+) */
  109. #define    UFB_Protect    5L        /* Change Protection Bits (V38+) */
  110.  
  111. #define UFN_OneFile    (1L<<UFB_OneFile)
  112. #define    UFN_Delete    (1L<<UFB_Delete)
  113. #define    UFN_NoFree    (1L<<UFB_NoFree)
  114. #define    UFN_Banner    (1L<<UFB_Banner)
  115. #define    UFN_NoLoad    (1L<<UFB_NoLoad)
  116. #define    UFN_Protect    (1L<<UFB_Protect)
  117.  
  118.  
  119. /* And Now For The UI_CrunchType Flag: */
  120.  
  121. #define    CRU_Archive    1        /* Archive (Lha, Zoo Etc.) */
  122. #define    CRU_Data    2        /* Data File */
  123. #define    CRU_Object    3        /* Object File */
  124. #define    CRU_Object2    4        /* 2 Segment Object File */
  125. #define    CRU_Track    5        /* Track File (DMS) (V36+) */
  126.  
  127. #define    CRUB_Encryp    7L        /* Encrypted File (If Bit Is Set) */
  128.  
  129.  
  130. /* And The Error Flag: */
  131.  
  132. #define    ERR_Open    1        /* Can't Open File */
  133. #define    ERR_ReadWrite    2        /* Read/Write Error */
  134. #define    ERR_Memory    3        /* Allocation Error (Out Of Memory) */
  135. #define    ERR_Determine    4        /* Can't Determine File */
  136. #define    ERR_Password    5        /* Illegal Password */
  137. #define    ERR_Hunk    6        /* Hunk Error */
  138. #define    ERR_Extern    7        /* Extern File Error */
  139.  
  140. #define    ERR_Corrupt    8        /* Crunched File Is Corrupt (V35+) */
  141.  
  142. #define    ERR_Device    9        /* Illegal Device (V36+) */
  143. #define ERR_DevOpen    10        /* Couldn't Opn Dev. Or Create Port V36+ */
  144. #define    ERR_CRC        11        /* CRC Checksum Error (V36+) */
  145. #define    ERR_CheckSum    12        /* Checksum Error (V36+) */
  146. #define    ERR_Old        13        /* Decruncher In Lib. Too Old (V36+) */
  147. #define    ERR_DevErr    14        /* Error From Device (V36+) */
  148.  
  149. #define    ERR_Protect    15        /* Couldn't Set Protection Bits (V38+) */
  150.  
  151. #define    ERR_Output    16        /* Output File Error (V39+) */
  152.  
  153. #define    ERR_OpenLibrary    17        /* Couldn't Open Library (V40+) */
  154. #define    ERR_Unknown    18        /* Unknown Error (V40+) */
  155.  
  156.  
  157. /* At Last The Cruncher Numbers: */
  158.  
  159. #define    MaxFilePack    12L
  160.  
  161. #define    CN_Lha        1        /* Lha */
  162. #define    CN_LhaSFX    2L        /* LhaSFX */
  163. #define    CN_Pak10    3L        /* Pak 1.0 */
  164. #define    CN_Dms        4L        /* Dms */
  165.  
  166. #define    CN_GnuPack10D    12L        /* Gnu Packer 1.0 D */
  167. #define    CN_GnuPack12D    13L        /* Gnu Packer 1.1/1.2 D */
  168. #define    CN_GnuPack12Two    14L        /* Gnu Packer 1.1/1.2 Two Segment */
  169. #define    CN_GnuPack10    15L        /* Gnu Packer 1.0 */
  170. #define    CN_GnuPack12    16L        /* Gnu Packer 1.1/1.2 One Segment */
  171. #define    CN_PPData    17L        /* PowerPacker Data */
  172. #define    CN_PPDataE    18L        /* PowerPacker Data/Encrypted */
  173. #define    CN_PPLoadSeg    19L        /* PowerPacker LoadSeg */
  174. #define    CN_PPLib    20L        /* PowerPacker Library */
  175. #define    CN_PPLibE    21L        /* PowerPacker Library/Encrypted */
  176. #define    CN_PPLibOv    22L        /* PowerPacker Library/Overlayed */
  177. #define    CN_PP2x        23L        /* PowerPacker 2.x */
  178. #define    CN_PP30        24L        /* PowerPacker 3.0 */
  179. #define    CN_PP30E    25L        /* PowerPacker 3.0 Encrypted */
  180. #define    CN_PP30Ov    26L        /* PowerPacker 3.0 Overlayed */
  181. #define    CN_PP41        27L        /* PowerPacker 4.0-4.1 */
  182. #define    CN_PP41E    28L        /* PowerPacker 4.0-4.1 Encrypted */
  183. #define    CN_PP41Ov    29L        /* PowerPacker 4.0-4.1 Overlayed */
  184. #define    CN_Turtle13    30L        /* Turtle Smasher 1.3 */
  185. #define    CN_TSqueeze80    31L        /* TurboSqueezer 8.0 */
  186. #define    CN_TSqueeze80S    32L        /* TurboSqueezer 8.0 Small */
  187. #define    CN_TryIt101    33L        /* TryIt 1.01 */
  188. #define    CN_Titanic11    34L        /* Titanics Cruncher 1.1 */
  189. #define    CN_Titanic12    35L        /* Titanics Cruncher 1.2 */
  190. #define    CN_Time22    36L        /* Time Cruncher 1.7-2.2 */
  191. #define    CN_Tetra21    37L        /* TetraPacker 2.1 */
  192. #define    CN_Tetra21Pro    38L        /* TetraPacker 2.1 Pro */
  193. #define    CN_Tetra22    39L        /* TetraPacker 2.2 */
  194. #define    CN_Tetra22Pro    40L        /* TetraPacker 2.2 Pro */
  195. #define    CN_Tetra102    41L        /* TetraCrunch 1.02 */
  196. #define    CN_Tetra11    42L        /* TetraCrunch 1.1 */
  197. #define    CN_Stone299d    43L        /* Stone Cracker 2.99d */
  198. #define    CN_Stone311    44L        /* Stone Cracker 3.11 */
  199. #define    CN_Stone401A    45L        /* Stone Cracker 4.01 A */
  200. #define    CN_Imploder31    46L        /* Imploder 1.0-3.1 */
  201. #define    CN_Imploder31P    47L        /* Imploder 1.0-3.1 Protected */
  202. #define    CN_Imploder31L    48L        /* Imploder 1.0-3.1 Library */
  203. #define    CN_Imploder31LP    49L        /* Imploder 1.0-3.1 Library/Protected */
  204. #define    CN_Imploder40    50L        /* Imploder 4.0 */
  205. #define    CN_Imploder40L    51L        /* Imploder 4.0 Library */
  206. #define    CN_BlkDec21    52L        /* Black & Decker 2.0-2.1 */
  207. #define    CN_BytKil20    53L        /* ByteKiller 2.0 */
  208. #define    CN_BytKil30    54L        /* ByteKiller 3.0 */
  209. #define    CN_TNMCrun11    55L        /* TNM Cruncher 1.1 */
  210. #define    CN_CrunMast10    56L        /* Crunch Master 1.0 */
  211. #define    CN_CrMania14A    57L        /* Crunch Mania 1.4-1.9t A */
  212. #define    CN_CrMania14AP    58L        /* Crunch Mania 1.4-1.8 A/P */
  213. #define    CN_CrMania14D    59L        /* Crunch Mania 1.4-1.9t D */
  214. #define    CN_CrMania18R    60L        /* Crunch Mania 1.4-1.9t R */
  215. #define    CN_CrMania18RS    61L        /* Crunch Mania 1.4-1.9t R/S */
  216. #define    CN_CrMania18RL    62L        /* Crunch Mania 1.8-1.9t R/L */
  217. #define    CN_CrMania18RLH    63L        /* Crunch Mania 1.8-1.9t R/L/H */
  218. #define    CN_CrMania18RH    64L        /* Crunch Mania 1.8-1.9t R/H */
  219. #define    CN_CrMania18DH    65L        /* Crunch Mania 1.8-1.9t D/H */
  220. #define    CN_CrMania18DHS    66L        /* Crunch Mania 1.8-1.9t D/H/S */
  221. #define    CN_CrMania18DS    67L        /* Crunch Mania 1.8-1.9t D/S */
  222. #define    CN_DoubAction10    68L        /* Double Action 1.0 */
  223. #define    CN_DragPack10    69L        /* DragPack 1.0 */
  224. #define    CN_House14    70L        /* House 1.4 (RSI-Packer) */
  225. #define    CN_HPC        71L        /* High Pressure Cruncher */
  226. #define    CN_HPCU        72L        /* High Pressure Cruncher U */
  227. #define    CN_IAM10Ice    73L        /* IAM Packer Pro 1.0 Ice */
  228. #define    CN_IAM10IceD    74L        /* IAM Packer Pro 1.0 Ice/D */
  229. #define    CN_IAM10Atm5    75L        /* IAM Packer Pro 1.0 Atm5 */
  230. #define    CN_IAM10Atm5D    76L        /* IAM Packer Pro 1.0 Atm5/D */
  231. #define    CN_ISC15P1    77L        /* ISC 1.5 Pass 1 */
  232. #define    CN_ISC15P2    78L        /* ISC 1.5 Pass 2 */
  233. #define    CN_ISC15P3    79L        /* ISC 1.5 Pass 3 */
  234. #define    CN_MastCrun31A    80L        /* Master Cruncher 3.0-3.1 A */
  235. #define    CN_MastCrun31R    81L        /* Master Cruncher 3.0-3.1 R */
  236. #define    CN_MastCrun31D    82L        /* Master Cruncher 3.0-3.1 D */
  237. #define    CN_MegaCrun10    83L        /* Megacruncher 1.0 */
  238. #define    CN_MegaCrun12A    84L        /* Megacruncher 1.2 A */
  239. #define    CN_MegaCrun12R    85L        /* Megacruncher 1.2 R */
  240. #define    CN_Defjam36    86L        /* Defjam 3.2-3.6 */
  241. #define    CN_Defjam36Pro    87L        /* Defjam 3.2-3.6 Pro */
  242. #define    CN_PackIt10    88L        /* PackIt 1.0 */
  243. #define    CN_PackIt10D    89L        /* PackIt 1.0 D */
  244. #define    CN_Relokit10    90L        /* Relokit 1.0 */
  245. #define    CN_Spike15    91L        /* Spike Cruncher 1.1-1.5 */
  246. #define    CN_SuperCrun27    92L        /* Super Cruncher 2.7 */
  247. #define    CN_Syncro46    93L        /* Syncro Packer 4.6 */
  248. #define    CN_Syncro46K    94L        /* Syncro Packer 4.6 K */
  249. #define    CN_Syncro46R    95L        /* Syncro Packer 4.6 R */
  250. #define    CN_Syncro46RK    96L        /* Syncro Packer 4.6 R/K */
  251. #define    CN_Stone400    97L        /* Stone Cracker 4.00 */
  252. #define    CN_Stone400D    98L        /* Stone Cracker 4.00 D */
  253. #define    CN_Stone401C    99L        /* Stone Cracker 4.01 C */
  254. #define    CN_Stone401D    100L        /* Stone Cracker 4.01 D */
  255.  
  256. #define    CN_MaxPacker12    113L        /* MaxPacker 1.2 */
  257. #define    CN_PMC        114L        /* PMC Cruncher */
  258. #define    CN_Stone271    115L        /* Stone Cracker 2.6a-2.71 */
  259. #define    CN_Stone271K    116L        /* Stone Cracker 2.6a-2.71 K */
  260. #define    CN_Stone310    117L        /* Stone Cracker 3.10 */
  261. #define    CN_Stone402    118L        /* Stone Cracker 4.02a */
  262. #define    CN_Stone402A    119L        /* Stone Cracker 4.02a A */
  263. #define    CN_Stone402D    120L        /* Stone Cracker 4.02a D */
  264. #define    CN_Stone402L    121L        /* Stone Cracker 4.02a L */
  265. #define    CN_Turtle200    122L        /* Turtle Smasher 2.00 */
  266. #define    CN_Turtle200D    123L        /* Turtle Smasher 2.00 D */
  267. #define    CN_ANC        124L        /* ANC-Cruncher */
  268. #define    CN_DisImp10    125L        /* Discovery File Imploder 1.0 */
  269. #define    CN_HQC20    126L        /* HQC Cruncher 2.0 */
  270.  
  271. #define    CN_Stone292    130L        /* Stone Cracker 2.92 */
  272. #define    CN_Stone299    131L        /* Stone Cracker 2.99 */
  273. #define    CN_PCompress29    132L        /* P-Compress 2.9 */
  274. #define    CN_CrMania19AP    133L        /* Crunch Mania 1.9t A/P */
  275. #define    CN_CrMania19AH    134L        /* Crunch Mania 1.9t A/H */
  276. #define    CN_CrMania19AHP    135L        /* Crunch Mania 1.9t A/H/P */
  277. #define CN_TSqueeze61   136L            /* TurboSqueezer 6.1 */
  278. #define    CN_FlashSpeed10    137L        /* FlashSpeed 1.0 */
  279. #define    CN_BytKilPro10    138L        /* ByteKiller 1.0 Pro */
  280. #define    CN_BytKilPro10K    139L        /* ByteKiller 1.0 Pro K */
  281. #define    CN_Stone401bA    140L        /* Stone Cracker 4.01ß A */
  282. #define    CN_TrashEli10    141L        /* Trash Eliminator 1.0 */
  283. #define    CN_Ultimate11b    142L        /* Ultimate Packer 1.1b */
  284. #define    CN_TFA154    143L        /* TFA Cruncher 1.54 */
  285. #define    CN_SExec11    144L        /* S-Exec 1.1 */
  286. #define    CN_Stone4102    145L        /* Stone Cracker 4.10.2 */
  287. #define    CN_Stone4102A    146L        /* Stone Cracker 4.10.2 A */
  288. #define    CN_Stone4102AP    147L        /* Stone Cracker 4.10.2 A/Plain */
  289. #define    CN_Stone4102APr    148L        /* Stone Cracker 4.10.2 A/Pro */
  290. #define    CN_Stone4102D    149L        /* Stone Cracker 4.10.2 D */
  291. #define    CN_Stone4102L    150L        /* Stone Cracker 4.10.2 L */
  292. #define    CN_DragPack252    151L        /* DragPack 2.52 */
  293. #define    CN_DragPack252D    152L        /* DragPack 2.52 D */
  294. #define    CN_Stone300    153L        /* Stone Cracker 3.00 */
  295. #define    CN_Stone300D    154L        /* Stone Cracker 3.00 D */
  296. #define    CN_Stone300K    155L        /* Stone Cracker 3.00 K */
  297.  
  298. #define    CN_PP2xMast    157L        /* PowerPacker 2.x Master */
  299. #define    CN_XPK        158L        /* XPK Packed */
  300. #define    CN_XPKE        159L        /* XPK Encrypted */
  301.  
  302. /* This Label Will Be Deleted Later On */
  303.  
  304. #define    CN_ComCra11    CN_TNMCrun11    /* Compressor Crackings Inc. V1.1 */
  305. #endif
  306.